package bid.yanhj.cniao5shop.webview;

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
 *  webView调用java
 *
 *  1、允许webview加载js
 *      webView.getSettings().setJavaScriptEnabled(true)
 *  2、编写js接口类
 *  3、给webview添加js接口
 *      webView.addJavascriptInterface(obj, name)
 *
 *
 */
public class MainActivity extends AppCompatActivity implements JsBridge{

    private WebView mWebView;
    private TextView mTextTv;
    private Button mBtn;
    private EditText mEitText;
    private Handler mHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initWidgets(savedInstanceState);
    }

    private void initWidgets(Bundle savedInstanceState) {
        mWebView = findViewById(R.id.webview);
        mTextTv = findViewById(R.id.text_vt);
        mBtn = findViewById(R.id.btn);
        mEitText = findViewById(R.id.edit_text);

        mHandler = new Handler();

        // 允许webview加载js
        mWebView.getSettings().setJavaScriptEnabled(true);

        // 给webview添加js接口
        mWebView.addJavascriptInterface(new PiccJsInterface(this), "piccLauncher");

        mWebView.loadUrl("file:///android_asset/index.html");

        //  打开允许调试开光
        // chrome://inspect/#devices TODO 好像不管用
        mWebView.setWebContentsDebuggingEnabled(true);

        // 注意
        // js回调方法中不能抛异常 会抛到web端 throw Exception
        // 传递参数类型要一致 （数组和对象）
        // 字符串空的时候，underfind

        ////////
        // 调动js方法
        ////////
        mBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String str = mEitText.getText().toString();
                mWebView.loadUrl("javascript:if(window.remote){window.remote('"+ str +"')}");
            }
        });
    }

    @Override
    public void setTextViewValue(final String value) {

        mHandler.post(new Runnable() {
            // 主线程执行
            @Override
            public void run() {
                mTextTv.setText(value);
            }
        });
    }
}
